In a network having a mesh topology, there may be multiple paths or "routes" between any two nodes of the network, wherein each path may include one or more intermediate nodes. Typically, a single "best" path between two nodes is calculated by a routing algorithm of a routing protocol such as Routing Information Protocol (RIP), Intermediate System-to-Intermediate System (IS-IS), Open Shortest Path First (OSPF), Private Network-to-Network Interface (PNNI), or Integrated PNNI (I-PNNI). Many routing protocols use a variation of the well-known Dijkstra algorithm to determine the best path between two network nodes.
For connection-oriented packet and cell switching, which may be implemented in Asynchronous Transfer Mode (ATM) networks, the best path calculated by the routing algorithm is used to define a dedicated path or "virtual circuit" (VC) for transferring information between the two nodes. As is well-known, ATM networks support both permanent virtual circuits (PVCs) and switched virtual circuits (SVCs), both of which are hereafter referred to generically as VCs.
Only a single VC is typically provided between any two nodes, but for some applications it may be desirable to provide multiple VCs for a particular source and destination pair of nodes. For example, a secondary VC may be used as a redundant connection should a primary VC fail or otherwise become unavailable. Multiple VCs may also be used to increase the amount of network traffic that may be exchanged between the source and destination nodes.
When a redundant VC is provided, it is desirable to provide a minimum amount of overlap between the redundant VC and the primary VC such that the possibility of a single point of failure for the redundant VC and the primary VC is reduced. If two non-overlapping paths are provided between a particular pair of nodes, any failure along one path will not cause the second path to fail. Therefore, a method for determining multiple minimally-overlapping paths between two nodes is needed.